@@ -75,6 +75,7 @@ module Agents |
||
| 75 | 75 |
Events look like this: |
| 76 | 76 |
|
| 77 | 77 |
{
|
| 78 |
+ "folder": "INBOX", |
|
| 78 | 79 |
"subject": "...", |
| 79 | 80 |
"from": "Nanashi <nanashi.gombeh@example.jp>", |
| 80 | 81 |
"to": ["Jane <jane.doe@example.com>"], |
@@ -273,6 +274,7 @@ module Agents |
||
| 273 | 274 |
end |
| 274 | 275 |
|
| 275 | 276 |
create_event :payload => {
|
| 277 |
+ 'folder' => mail.folder, |
|
| 276 | 278 |
'subject' => mail.subject, |
| 277 | 279 |
'from' => mail.from_addrs.first, |
| 278 | 280 |
'to' => mail.to_addrs, |
@@ -355,14 +357,14 @@ module Agents |
||
| 355 | 357 |
end |
| 356 | 358 |
|
| 357 | 359 |
def select(folder) |
| 358 |
- ret = super |
|
| 360 |
+ ret = super(@folder = folder) |
|
| 359 | 361 |
@uidvalidity = responses['UIDVALIDITY'].last |
| 360 | 362 |
ret |
| 361 | 363 |
end |
| 362 | 364 |
|
| 363 | 365 |
def fetch_mails(set) |
| 364 | 366 |
fetch(set, %w[UID RFC822.HEADER]).map { |data|
|
| 365 |
- Message.new(self, @uidvalidity, data) |
|
| 367 |
+ Message.new(self, data, folder: @folder, uidvalidity: @uidvalidity) |
|
| 366 | 368 |
} |
| 367 | 369 |
end |
| 368 | 370 |
end |
@@ -370,11 +372,13 @@ module Agents |
||
| 370 | 372 |
class Message < SimpleDelegator |
| 371 | 373 |
DEFAULT_BODY_MIME_TYPES = %w[text/plain text/enriched text/html] |
| 372 | 374 |
|
| 373 |
- attr_reader :uidvalidity, :uid |
|
| 375 |
+ attr_reader :uid, :folder, :uidvalidity |
|
| 374 | 376 |
|
| 375 |
- def initialize(client, uidvalidity, fetch_data) |
|
| 377 |
+ def initialize(client, fetch_data, props = {})
|
|
| 376 | 378 |
@client = client |
| 377 |
- @uidvalidity = uidvalidity |
|
| 379 |
+ props.each { |key, value|
|
|
| 380 |
+ instance_variable_set(:"@#{key}", value)
|
|
| 381 |
+ } |
|
| 378 | 382 |
attr = fetch_data.attr |
| 379 | 383 |
@uid = attr['UID'] |
| 380 | 384 |
super(Mail.read_from_string(attr['RFC822.HEADER'])) |
@@ -19,6 +19,10 @@ describe Agents::ImapFolderAgent do |
||
| 19 | 19 |
@checker.save! |
| 20 | 20 |
|
| 21 | 21 |
message_mixin = Module.new {
|
| 22 |
+ def folder |
|
| 23 |
+ 'INBOX' |
|
| 24 |
+ end |
|
| 25 |
+ |
|
| 22 | 26 |
def uidvalidity |
| 23 | 27 |
'100' |
| 24 | 28 |
end |
@@ -54,6 +58,7 @@ describe Agents::ImapFolderAgent do |
||
| 54 | 58 |
|
| 55 | 59 |
@payloads = [ |
| 56 | 60 |
{
|
| 61 |
+ 'folder' => 'INBOX', |
|
| 57 | 62 |
'from' => 'nanashi.gombeh@example.jp', |
| 58 | 63 |
'to' => ['jane.doe@example.com', 'john.doe@example.com'], |
| 59 | 64 |
'cc' => [], |
@@ -65,6 +70,7 @@ describe Agents::ImapFolderAgent do |
||
| 65 | 70 |
'mime_type' => 'text/plain', |
| 66 | 71 |
}, |
| 67 | 72 |
{
|
| 73 |
+ 'folder' => 'INBOX', |
|
| 68 | 74 |
'from' => 'john.doe@example.com', |
| 69 | 75 |
'to' => ['jane.doe@example.com', 'nanashi.gombeh@example.jp'], |
| 70 | 76 |
'cc' => [], |